package ms.unicorn.modellanguage;


import ms.unicorn.Element;
import ms.unicorn.language.languagedef.FigureContainer;
import ms.unicorn.language.languagedef.ViewDef;

import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartFactory;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
import org.eclipse.gmf.runtime.emf.type.core.edithelper.IEditHelperAdvice;
import org.eclipse.gmf.runtime.notation.View;

public interface IElementEditHelperAdvice extends IEditHelperAdvice, EditPartFactory {
	//Map<String,IFigure> createFigures(EditPart context, Element element, EditPart elementEditPart);
	
	View createView(LanguageElement element, IAdaptable semanticAdapter,
			View containerView, String semanticHint, int index,
			boolean persisted, PreferencesHint preferencesHint);

	EditPolicy createPrimaryDragEditPolicy(Element element, EditPart editPart);

	FigureContainer createFigure(LanguageElement element, Element domainObj, EditPart editpart);

	IParser getParser(ViewDef definition, Element obj, LanguageElement le);

	void createDefaultEditPolicies(LanguageElement lang, Element element, EditPart editart);

	/**
	 * getCreationCommand() returns a command object that will create domain object for a construct.
	 * This method is invoke from the EditPolicy of the construct container.
	 */
	//ICommand getCreationCommand(LanguageElement element,
	//		CreateElementRequest req);
}
